#include <unistd.h>
#include <iostream>
using std::cout;
using std::endl;
//缓冲区
//缓冲区的刷新机制，哪些情况下会导致缓冲区的刷新
//1.程序正常结束时，会导致缓冲区的刷新
//2.缓冲区存满，也会导致缓冲区刷新
//3.调用endl等函数，强制刷新缓冲区
void test(){
    //立即输出了1024个a，休眠了5秒钟之后输出了最后一个a
    //为什么呢？因为缓冲区容量是1024
    //把最后一个a存入缓冲区，会导致缓冲区刷新，所以会立刻刷出1024个a
    //最后一个a等待缓冲区刷新之后存放了进去
    //休眠5秒钟之后，将最后一个a刷新了，因为此时程序正常结束了
    for(int i = 0; i < 1025; ++i){
        cout << 'a';
    }
    sleep(5);
}

void test2(){
    //如果不加endl，那么此时是休眠6秒钟之后，会刷新出15个a
    //因为这15个a存在于缓冲区中，等待程序结束时，刷新出来
    //但是如果加了endl，那么相当于执行刷新缓冲区操作，立刻刷新缓冲区
    for(int i = 0; i < 15; ++i){
        cout << 'a' << endl;
    }
    sleep(6);
}

int main()
{
    test2();
    return 0;
}

